Learn R Programming

pomp (version 1.4.1.1)

Particle filter: Particle filter

Description

A plain vanilla sequential Monte Carlo (particle filter) algorithm. Resampling is performed at each observation.

Usage

## S3 method for class 'pomp':
pfilter(object, params, Np, tol = 1e-17,
    max.fail = Inf, pred.mean = FALSE, pred.var = FALSE,
    filter.mean = FALSE, filter.traj = FALSE, save.states = FALSE,
    save.params = FALSE, verbose = getOption("verbose"), ...)
## S3 method for class 'pfilterd.pomp':
pfilter(object, params, Np, tol, \dots)
## S3 method for class 'pfilterd.pomp':
logLik(object, \dots)
## S3 method for class 'pfilterd.pomp':
cond.logLik(object, \dots)
## S3 method for class 'pfilterd.pomp':
eff.sample.size(object, \dots)
## S3 method for class 'pfilterd.pomp':
pred.mean(object, pars, \dots)
## S3 method for class 'pfilterd.pomp':
pred.var(object, pars, \dots)
## S3 method for class 'pfilterd.pomp':
filter.mean(object, pars, \dots)
## S3 method for class 'pfilterd.pomp':
filter.traj(object, vars, \dots)

Arguments

object
An object of class pomp or inheriting class pomp.
params
A npars x Np numeric matrix containing the parameters corresponding to the initial state values in xstart. This must have a rownames attribute. If it desired that all particles should share t
Np
the number of particles to use. This may be specified as a single positive integer, in which case the same number of particles will be used at each timestep. Alternatively, if one wishes the number of particles to vary across timesteps, one may sp
tol
positive numeric scalar; particles with likelihood less than tol are considered to be lost. A filtering failure occurs when, at some time point, all particles are lost. When all particles are lost, the conditional lik
max.fail
integer; the maximum number of filtering failures allowed. If the number of filtering failures exceeds this number, execution will terminate with an error. By default, max.fail is set to infinity, so no error can be triggered.
pred.mean
logical; if TRUE, the prediction means are calculated for the state variables and parameters.
pred.var
logical; if TRUE, the prediction variances are calculated for the state variables and parameters.
filter.mean
logical; if TRUE, the filtering means are calculated for the state variables and parameters.
filter.traj
logical; if TRUE, a filtered trajectory is returned for the state variables and parameters.
save.states, save.params
logical. If save.states=TRUE, the state-vector for each particle at each time is saved in the saved.states slot of the returned pfilterd.pomp object.
verbose
logical; if TRUE, progress information is reported as pfilter works.
pars
Names of parameters.
vars
Names of state variables.
...
additional arguments that override the defaults.

Value

  • An object of class pfilterd.pomp. This class inherits from class pomp. The following additional slots can be accessed via the $ operator: [object Object],[object Object],[object Object]

References

M. S. Arulampalam, S. Maskell, N. Gordon, & T. Clapp. A Tutorial on Particle Filters for Online Nonlinear, Non-Gaussian Bayesian Tracking. IEEE Trans. Sig. Proc. 50:174--188, 2002.

See Also

pomp, mif, pmcmc, bsmc2, and the tutorials on the http://kingaa.github.io/pomp{package website}.

Examples

Run this code
pompExample(gompertz)
pf <- pfilter(gompertz,Np=1000)	## use 1000 particles
plot(pf)
logLik(pf)
cond.logLik(pf)			## conditional log-likelihoods
eff.sample.size(pf)             ## effective sample size
logLik(pfilter(pf))      	## run it again with 1000 particles
## run it again with 2000 particles
pf <- pfilter(pf,Np=2000,filter.mean=TRUE)
fm <- filter.mean(pf)    	## extract the filtering means

Run the code above in your browser using DataLab